home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / msnewout.arc / NEWOUT.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-09-14  |  2.5 KB  |  73 lines

  1.                 INCLUDE         C:\PRG\ASM\MACROS\MACROS.ASM
  2.                 EXTRN   MYPTYUQQ:FAR
  3.  
  4. DATA            SEGMENT         PUBLIC 'DATA'
  5. ; PUBLIC AND EXTERN DATA
  6. ; DECLORATIONS GO HERE
  7. DATA            ENDS
  8.  
  9. DGROUP          GROUP   DATA
  10. ASSUME          CS: NEWOUT , DS : DGROUP , SS : DGROUP
  11.  
  12. NEWOUT          SEGMENT 'CODE'
  13. PUBLIC          INITOUTS
  14. PUBLIC          FINIOUTS
  15.  
  16. INITOUTS        PROC    FAR
  17.                 @DOS    35H,21H                         ; READ OLD 21 INTR
  18. ;
  19. ; SETUP LONG JUMPS TO OLD VECTOR
  20. ;
  21.                 MOV     CS:WORD PTR [NEW_21_00+1],BX
  22.                 MOV     CS:WORD PTR [NEW_21_20+1],BX
  23.                 MOV     CS:WORD PTR [NEW_21_00+3],ES
  24.                 MOV     CS:WORD PTR [NEW_21_20+3],ES
  25.                 PUSH    DS
  26.                 MOV     AX,CS
  27.                 CLI
  28.                 MOV     DS,AX                           ; SAVE DS FOR M S
  29.                 MOV     DX,OFFSET NEWOUT: NEW_21
  30.                 @DOS    25H,21H                         ; INSTALL VECTOR
  31.                 POP     DS                              ; RESTORE DS
  32.                 STI
  33.                 RET
  34. INITOUTS        ENDP
  35.  
  36. FINIOUTS        PROC    FAR
  37.                 PUSH    DS
  38.                 CLI
  39.                 MOV     DX, CS:WORD PTR [NEW_21_00+1]
  40.                 MOV     AX, CS:WORD PTR [NEW_21_00+3]
  41.                 MOV     DS,AX
  42.                 @DOS    25H,21H                 ; RESTORE OLD VECTOR
  43.                 POP     DS
  44.                 STI
  45.                 RET
  46. FINIOUTS        ENDP
  47.  
  48. NEW_21:
  49.                 CMP     AH,40H          ; CHECK IF FUNCTION 40H
  50.                 JE      NEW_21_10
  51. NEW_21_00:
  52. ;
  53. ; DIRECT INTER SEG JMPS USED TO SAVE 9 CLOCK CYCLES PER DOS CALL
  54. ;
  55.                 JUMPFAR     0FFFFH,0000H        ; DUMMY JMP ADDRESS
  56. NEW_21_10:
  57.                 CMP     BL,1                    ; CHECK IF OUTPUT
  58.                 JE      NEW_21_30               ; JMP STD OUTPUT
  59. NEW_21_20:
  60.                 JUMPFAR     0FFFFH,0000H        ; DUMMY JMP ADDRESS
  61. NEW_21_30:
  62.                 STI
  63.                 PUSH    CX                      ; FOR AX RETURN VAL
  64.                 PUSH    CX                      ; FIRST PARAM
  65.                 PUSH    DS                      ; SEG PARAM
  66.                 PUSH    DX                      ; OFF PARAM
  67.                 CALL    MYPTYUQQ                ; CALL NEW STD OUT
  68.                 POP     AX                      ; RESTORE RET VAL
  69.                 IRET                            ; INT RETURN FROM NEW 21
  70.  
  71. NEWOUT          ENDS
  72.                 END
  73.